﻿#pragma once

#include<locale.h>
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
#include <stdbool.h>
#define WALL L'墙'
#define POS_X 24
#define POS_Y 5
#define BODY L'口'
#define FOOD L'口'
enum GAME_STATUS
{
	OK = 1,//正常用
			
	ESC,//正常退出
	KILL_BY_WALL,//撞墙
	KILL_BY_SELF	//	撞到自身
};
//方向
enum DIRECTION
{
	UP=1,
	DOWN,
	LEFT,
	RIGHT
};
typedef struct SnakeNode
{
	int x;
	int y;
	struct SnakeNode* next;

}SnakeNode, * pSnakeNode;
//贪吃蛇
typedef struct Snake
{
	pSnakeNode pSnake;//维护整条蛇的指针
	pSnakeNode pFood;//指向食物的指针
	int Score;//分数
	int FoodWeight;//一个食物的分数
	int SleepTime;//蛇休眠的时间，越短速度越快
	enum GAME_STATUS status;//游戏当前的状态
	enum DIRECTION dir;//蛇当前走的方向

}Snake,*pSnake;
//游戏开始
void GameStart(pSnake ps); 
//欢迎界面
void WelcomeTogame();

void CreateMap();

//初始化蛇
void InitSnake(pSnake ps);

//创建食物
void CreateFood(pSnake ps);
void GameRun(pSnake ps);
void PrintHelpInfo();
//蛇移动函数
void SnakeMove(ps);
//判断蛇头的下一步是否是食物
int NextIsFood(pSnake ps, pSnakeNode pNext);

void EatFood(pSnake ps, pSnakeNode pNext);

void NotEatFood(pSnake ps, pSnakeNode pNext);
void KillBySelf(pSnake ps);

void KillByWall(pSnake ps);

void GameEnd(pSnake ps);